Generally described, computing devices and communication networks can be utilized to exchange information. In a common application, a device can request content from another device via the communication network. For example, a user at a personal computing device can utilize a software browser application to request a Web page or Web application from a server device via the Internet. For another example, a user of a content providing service can utilize a display device (e.g., television, computer, mobile device, smartphone, tablet) to request content (e.g., an audio presentation, video presentation, audiovisual presentation, movie, television show, video, podcast) to be downloaded or streamed from a server device via the Internet to the display device. In such embodiments, the user computing device or display device can be referred to as a client device and the server device can be referred to as a content provider.
Content providers are generally motivated to provide requested content to client devices often with consideration of cost, speed, or efficiency associated with the transmission of the content data. For larger scale implementations, a content provider may receive content requests from a high volume of client devices which can place a strain on the content provider's computing resources. Additionally, the content requested by the client devices may have a number of components, which can further place additional strain on the content provider's computing resources.
One attempt to improve the delivery of content to client device includes utilization of caching components and processes. Generally described, caching refers to the storage of information provided by a content provider in any storage (e.g., local memory) with greater locality than the backing store where the information is persistently maintained. Typically, the amount of resources required to access the information in the cache is less than the resources required to retrieve the information from the source. Accordingly, once information is retrieved from the content source, it can be stored in the cache for use in subsequent requests for the information. Generally, the greater the number of requests that can be served from the cache, the faster and smoother the overall system performance.
Consistency between the data stored in the cache and the data stored in the backing store (e.g., source of content data) may be critical to many computing systems or services. For example, a content provider may periodically update data maintained in the source. After such an update, any cached versions of the data may include incorrect or out of date information. The content provider may have policies that prevent the use of out of date cache information or a requirement for the cache to be updated or purged, thus consistency between data stored in the cache and data stored in the backing store must be properly maintained. The management of data consistency for a cache system may become complicated when multiple computing devices, applications, services, processes, or threads exercise overlapping or conflicting access to data via a same cache system.